// 数组扁平化
(() => {
  let arr = [1, [2, 3], 4, 5];
  function flat (arr) {
    return arr.reduce((sum, item) => {
      return sum.concat(Array.isArray(item) ? flat(item) : item);
    }, []);
  }
  let arr__ = flat(arr);
  console.log('reduce函数实现数组扁平化', arr__);
})();


// 简单的递归实现
(() => {
  let arr = [1, [2, 3, 4], 5];
  let result = [];
  function flat (arr) {
    for (let i = 0; i < arr.length; i++) {
      if (!Array.isArray(arr[i])) {
        result.push(arr[i]);
      } else {
        flat(arr[i]);
      }
    }
  }
  flat(arr);
  console.log('简单的递归实现', result);
})();


// split结合toString
(() => {
  let arr = [1, [2, 3, 4], 5];
  let arr__ = arr.toString().split(',').map(item => {
    return item / 2 * 2;
  })
  console.log('split结合toString', arr__);
})();

// es6里面的flat函数
(() => {
  let arr = [1, [2, 3, 4], 5];
  let arr__ = arr.flat();
  console.log('es6里面的flat函数', arr__);
})();